package com.zjl.redis.第02章_十大数据类型;

import com.zjl.redis.第01章_redis安装.RedisUtil;
import redis.clients.jedis.Jedis;

/**
 * redis列表(List)
 * List (列表)
 * Redis列表是简单的字符串列表，按照插入顺序排序。
 * 你可以添加一个元素到列表的头部(左边)或者尾部(右边)
 * 它的底层实际是个双端链表，最多可以包含2^32 - 1个元素
 *      (4294967295,每个列表超过40亿个元素)
 *
 */
public class B2_List {

    /** List/可以重复  只能存String  是一个双向链表
     *      lpush/rpush key value1 value2等等//从左边/右边插入一个或多个值
     *         如lpush list a b c d e//从左边一个或多个值
     *           rpush list 1 2 3 4 5//从右边插入一个或多个值
     *           list  存的就是   e d c b a 1 2 3 4 5
     *      lpop/rpop key //从左边/右边吐出一个值  如果key的value取完了 这个key会自动删除
     *      rpoplpush key1 key2//从key1的右边吐出一个值  存在key2的左边
     *      lrange key start stop//查询key  从start开始到stop结束元素 0表示第一个（最左边） -1最后一个表示最右边
     *      lindex key index//获取指定下标的元素 不删除
     *      llen key //获取key的长度
     *      linsert key before/after value newvalue//插入 在key的指定value 左边/右边 插入newvalue
     *      lrem key n value//删除 key   n（n>0从左开始删   n<0从右开始删  n=0表示全部删除）个value//因为list可重复*
     *      lset key index value//将key的下标为index的值替换为value
     *      ltrim key start stop//保留 key 的下标为 [start ~ stop]  的值
     *
     *
     *
     *      订阅的文章公共号
     *
     *      List的数据结构为块表quickList
     *      它将所有的元素紧挨着一起存储,分配的是一块连续的内存
     *          当数据量比较多的时候才会改成quicklist。
     *          因为普通的链表需要的附加指针空间太大,会比较浪费空间。比如这个列表里存的只
     *          是int类型的数据,结构上还需要两个额外的指针prev和next。。
     *               ziplist<->ziplist<->ziplist<->ziplist<->ziplist
     *          Redis将链表和ziplist结合起来组成了quicklist。也就是将多个ziplist使用双向指
     *          针串起来使用。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。。
     *
     */
    public static void main(String[] args) {
        Jedis jedis = RedisUtil.getRedis();
        System.currentTimeMillis();//获取当前时间戳
        System.out.println(jedis.ping());//查看是否连接成功  PONG:成功

        System.out.println(jedis.lpush("b","zz"));


        jedis.close();
    }

}
